package org.zhangyp.n01jdkapi.n02datatype;

/**
 * jdk中基本数据类型以及包装类测试
 *
 * @author zhangyp
 * @date 2023/6/7 10:41
 */
public class DataTypeTest {
    
    /**
     * 缓存池
     * new Integer(123) 每次都会新建一个对象
     * Integer.valueOf(123) 会使用缓存池中的对象，多次调用会取得同一个对象的引用。
     * valueOf() 方法的实现比较简单，就是先判断值是否在缓存池中，如果在的话就直接返回缓存池的内容。 具体查看源码
     *
     * 编译器会在缓冲池范围内的基本类型自动装箱过程调用 valueOf() 方法，因此多个 Integer 实例使用自动装箱来创建并且值相同，那么就会引用相同的对象。
     *
     * boolean values true and false
     * all byte values
     * short values between -128 and 127
     * int values between -128 and 127
     * char in the range \u0000 to \u007F
     * @param:
     * @return: void
     * @author: zhangyp
     * @date: 2023/6/9 9:26
     **/
    public void cachePoolTest() {
        Integer x = new Integer(123); //java11中标记为不建议直接new一个基本数据类型
        Integer y = new Integer(123);
        System.out.println(x == y);    // false
        Integer z = Integer.valueOf(123);
        Integer k = Integer.valueOf(123);
        System.out.println(z == k);   // true
    }

    public static void main(String[] args) {
        DataTypeTest test = new DataTypeTest();
        test.cachePoolTest();
    }
}
